aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDefineOutside <[email protected]>2021-12-15 18:15:04 +0000
committerShane Freeder <[email protected]>2021-12-15 18:15:04 +0000
commit5ad1d9a01da7d9faa6fd170c617d77927cbeeedc (patch)
tree365c131ba98a88e41ea80259a6aaf7c12028a49c
parent95d881f91681b2ff3a659578f42dd890f2b6ceec (diff)
downloadPaper-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.patch25
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) {