275173e538
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 0c5d8709 SPIGOT-7400: Downgrade maven-resolver due to issues resolving certain depends 255c4fdb SPIGOT-7380: Add PlayerInteractEvent#getClickedPosition and ChiseledBookshelf#getSlot CraftBukkit Changes: b6b514b7e SPIGOT-7400: Downgrade maven-resolver due to issues resolving certain depends fcff84de9 SPIGOT-7399: Revert null check in CraftMetaItem#safelyAdd 44a4b5649 SPIGOT-7380: Add PlayerInteractEvent#getClickedPosition and ChiseledBookshelf#getSlot 676969d01 SPIGOT-7389: Handle setting null items in ChiseledBookshelf Inventory
71 Zeilen
4.3 KiB
Diff
71 Zeilen
4.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Mon, 2 Aug 2021 10:10:40 +0200
|
|
Subject: [PATCH] Improve boat collision performance
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
|
|
index 7354711e194ab58b11b68f447c1fc795fe611a65..5579dad0ba8f2e4ce43883e7d36059c2a2bd1b83 100644
|
|
--- a/src/main/java/net/minecraft/Util.java
|
|
+++ b/src/main/java/net/minecraft/Util.java
|
|
@@ -113,6 +113,7 @@ public class Util {
|
|
}).findFirst().orElseThrow(() -> {
|
|
return new IllegalStateException("No jar file system provider found");
|
|
});
|
|
+ public static final double COLLISION_EPSILON = 1.0E-7; // Paper
|
|
private static Consumer<String> thePauser = (message) -> {
|
|
};
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
index 9cc26c870d3785c7ab798cf53f10ad8fd942bfb0..0378b20decc9f22a480f68e8062c3b60d01d966e 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -1383,7 +1383,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
if (!source.is(DamageTypeTags.IS_PROJECTILE)) {
|
|
Entity entity = source.getDirectEntity();
|
|
|
|
- if (entity instanceof LivingEntity) {
|
|
+ if (entity instanceof LivingEntity && entity.distanceToSqr(this) <= (200.0D * 200.0D)) { // Paper
|
|
LivingEntity entityliving = (LivingEntity) entity;
|
|
|
|
this.blockUsingShield(entityliving);
|
|
@@ -1488,11 +1488,12 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
}
|
|
|
|
if (entity1 != null && !source.is(DamageTypeTags.IS_EXPLOSION)) {
|
|
- double d0 = entity1.getX() - this.getX();
|
|
+ final boolean far = entity1.distanceToSqr(this) > (200.0 * 200.0); // Paper
|
|
+ double d0 = far ? (Math.random() - Math.random()) : entity1.getX() - this.getX(); // Paper
|
|
|
|
double d1;
|
|
|
|
- for (d1 = entity1.getZ() - this.getZ(); d0 * d0 + d1 * d1 < 1.0E-4D; d1 = (Math.random() - Math.random()) * 0.01D) {
|
|
+ for (d1 = far ? Math.random() - Math.random() : entity1.getZ() - this.getZ(); d0 * d0 + d1 * d1 < 1.0E-4D; d1 = (Math.random() - Math.random()) * 0.01D) { // Paper
|
|
d0 = (Math.random() - Math.random()) * 0.01D;
|
|
}
|
|
|
|
@@ -2223,7 +2224,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
this.hurtCurrentlyUsedShield((float) -event.getDamage(DamageModifier.BLOCKING));
|
|
Entity entity = damagesource.getDirectEntity();
|
|
|
|
- if (entity instanceof LivingEntity) {
|
|
+ if (entity instanceof LivingEntity && entity.distanceToSqr(this) <= (200.0D * 200.0D)) { // Paper
|
|
this.blockUsingShield((LivingEntity) entity);
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
|
index c7634407ccaf76513f19688c0f5e102bb2b5a997..35aeba4e8430e6419caa9db4a0b931a994228618 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/vehicle/Boat.java
|
|
@@ -709,8 +709,8 @@ public class Boat extends Entity implements VariantHolder<Boat.Type> {
|
|
this.invFriction = 0.05F;
|
|
if (this.oldStatus == Boat.Status.IN_AIR && this.status != Boat.Status.IN_AIR && this.status != Boat.Status.ON_LAND) {
|
|
this.waterLevel = this.getY(1.0D);
|
|
- this.setPos(this.getX(), (double) (this.getWaterLevelAbove() - this.getBbHeight()) + 0.101D, this.getZ());
|
|
- this.setDeltaMovement(this.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D));
|
|
+ this.move(MoverType.SELF, new Vec3(0.0, ((double) (this.getWaterLevelAbove() - this.getBbHeight()) + 0.101D) - this.getY(), 0.0)); // Paper
|
|
+ this.setDeltaMovement(this.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D)); // Paper
|
|
this.lastYd = 0.0D;
|
|
this.status = Boat.Status.IN_WATER;
|
|
} else {
|