diff options
author | DefineOutside <[email protected]> | 2021-12-15 18:15:04 +0000 |
---|---|---|
committer | Shane Freeder <[email protected]> | 2021-12-15 18:15:04 +0000 |
commit | 5ad1d9a01da7d9faa6fd170c617d77927cbeeedc (patch) | |
tree | 365c131ba98a88e41ea80259a6aaf7c12028a49c | |
parent | 95d881f91681b2ff3a659578f42dd890f2b6ceec (diff) | |
download | Paper-5ad1d9a01da7d9faa6fd170c617d77927cbeeedc.tar.gz Paper-5ad1d9a01da7d9faa6fd170c617d77927cbeeedc.zip |
Fix empty voxel shape usage (Fixes #7043)
-rw-r--r-- | patches/server/0825-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/patches/server/0825-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/server/0825-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch index 35b70c0c0d..093ed036f5 100644 --- a/patches/server/0825-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch +++ b/patches/server/0825-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch @@ -955,7 +955,7 @@ index 25b787d1b22e495fb6756e4ee909776ed8699492..042be2cf60a9d01698808d84f2e537a5 } // CraftBukkit start diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 516015eb48900abaf0e2f47de4ffd10e9cf4d9a7..821c34a48127802947e293c4599e0cdaea3c040e 100644 +index e2c35ace138d7a6c41e7f07e9759f684b7152b71..9bb44918af119d9afae4a0a050c6a5381f028364 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1076,9 +1076,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i @@ -1443,7 +1443,7 @@ index cdb785619b4fce3cb7f0b4a996a15fa43de5f4d1..6db47035fe940ef1f78a14cae6103e22 + } diff --git a/src/main/java/net/minecraft/world/phys/shapes/Shapes.java b/src/main/java/net/minecraft/world/phys/shapes/Shapes.java -index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31f1fa0d34 100644 +index 9176735c08a75854209f24113b0e78332249dc4d..731c7dd15f131dc124be6af8f342b122cb89491b 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/Shapes.java +++ b/src/main/java/net/minecraft/world/phys/shapes/Shapes.java @@ -19,16 +19,17 @@ public final class Shapes { @@ -1466,11 +1466,10 @@ index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31 } public static VoxelShape box(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { -@@ -40,30 +41,11 @@ public final class Shapes { - } +@@ -41,29 +42,14 @@ public final class Shapes { public static VoxelShape create(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { -- if (!(maxX - minX < 1.0E-7D) && !(maxY - minY < 1.0E-7D) && !(maxZ - minZ < 1.0E-7D)) { + if (!(maxX - minX < 1.0E-7D) && !(maxY - minY < 1.0E-7D) && !(maxZ - minZ < 1.0E-7D)) { - int i = findBits(minX, maxX); - int j = findBits(minY, maxY); - int k = findBits(minZ, maxZ); @@ -1487,10 +1486,10 @@ index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31 - } else { - return new ArrayVoxelShape(BLOCK.shape, (DoubleList)DoubleArrayList.wrap(new double[]{minX, maxX}), (DoubleList)DoubleArrayList.wrap(new double[]{minY, maxY}), (DoubleList)DoubleArrayList.wrap(new double[]{minZ, maxZ})); - } -- } else { -- return empty(); -- } -+ return new io.papermc.paper.voxel.AABBVoxelShape(new AABB(minX, minY, minZ, maxX, maxY, maxZ)); // Paper ++ return new io.papermc.paper.voxel.AABBVoxelShape(new AABB(minX, minY, minZ, maxX, maxY, maxZ)); // Paper + } else { + return empty(); + } } public static VoxelShape create(AABB box) { @@ -1499,7 +1498,7 @@ index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31 } @VisibleForTesting -@@ -125,6 +107,20 @@ public final class Shapes { +@@ -125,6 +111,20 @@ public final class Shapes { } public static boolean joinIsNotEmpty(VoxelShape shape1, VoxelShape shape2, BooleanOp predicate) { @@ -1520,7 +1519,7 @@ index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31 if (predicate.apply(false, false)) { throw (IllegalArgumentException)Util.pauseInIde(new IllegalArgumentException()); } else { -@@ -196,6 +192,43 @@ public final class Shapes { +@@ -196,6 +196,43 @@ public final class Shapes { } public static VoxelShape getFaceShape(VoxelShape shape, Direction direction) { @@ -1564,7 +1563,7 @@ index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31 if (shape == block()) { return block(); } else { -@@ -210,7 +243,7 @@ public final class Shapes { +@@ -210,7 +247,7 @@ public final class Shapes { i = 0; } @@ -1573,7 +1572,7 @@ index 9176735c08a75854209f24113b0e78332249dc4d..7213acf7ac083e37888eeba28f740c31 } } -@@ -235,6 +268,53 @@ public final class Shapes { +@@ -235,6 +272,53 @@ public final class Shapes { } public static boolean faceShapeOccludes(VoxelShape one, VoxelShape two) { |