9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-29 19:59:08 +00:00

Create a copy of block voxel shapes

This commit is contained in:
Samsuik
2024-05-23 20:40:20 +01:00
parent 1d3ea76e13
commit 036e3b8c3f

View File

@@ -5,14 +5,14 @@ Subject: [PATCH] Protect block shapes against plugins
diff --git a/src/main/java/net/minecraft/world/level/block/CarpetBlock.java b/src/main/java/net/minecraft/world/level/block/CarpetBlock.java
index 0cc3df1f8a7784af812a1519e0a508b67314ce9a..a9f5e0566999c4d609fc6707462b5b6775070ac2 100644
index 0cc3df1f8a7784af812a1519e0a508b67314ce9a..9a267f4cfe10d4145d6a2966b7a2bfb6fe4688c6 100644
--- a/src/main/java/net/minecraft/world/level/block/CarpetBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/CarpetBlock.java
@@ -14,6 +14,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
public class CarpetBlock extends Block {
public static final MapCodec<CarpetBlock> CODEC = simpleCodec(CarpetBlock::new);
protected static final VoxelShape SHAPE = Block.box(0.0, 0.0, 0.0, 16.0, 1.0, 16.0);
+ private static final VoxelShape SHAPE_COPY = SHAPE; // Sakura - protect block shapes
+ private static final VoxelShape SHAPE_COPY = SHAPE.copy(); // Sakura - protect block shapes
@Override
public MapCodec<? extends CarpetBlock> codec() {
@@ -26,7 +26,7 @@ index 0cc3df1f8a7784af812a1519e0a508b67314ce9a..a9f5e0566999c4d609fc6707462b5b67
@Override
diff --git a/src/main/java/net/minecraft/world/level/block/LadderBlock.java b/src/main/java/net/minecraft/world/level/block/LadderBlock.java
index 54781ea0771327f93a7cf672bb4b2945700c47e5..237b6a07e858395b3d43adf052b4047cb802379e 100644
index 54781ea0771327f93a7cf672bb4b2945700c47e5..e26a86fb8595705bcbb747872c3d8f73a519b42c 100644
--- a/src/main/java/net/minecraft/world/level/block/LadderBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/LadderBlock.java
@@ -28,6 +28,12 @@ public class LadderBlock extends Block implements SimpleWaterloggedBlock {
@@ -34,10 +34,10 @@ index 54781ea0771327f93a7cf672bb4b2945700c47e5..237b6a07e858395b3d43adf052b4047c
protected static final VoxelShape SOUTH_AABB = Block.box(0.0, 0.0, 0.0, 16.0, 16.0, 3.0);
protected static final VoxelShape NORTH_AABB = Block.box(0.0, 0.0, 13.0, 16.0, 16.0, 16.0);
+ // Sakura start - protect block shapes
+ private static final VoxelShape EAST_AABB_COPY = EAST_AABB;
+ private static final VoxelShape WEST_AABB_COPY = WEST_AABB;
+ private static final VoxelShape SOUTH_AABB_COPY = SOUTH_AABB;
+ private static final VoxelShape NORTH_AABB_COPY = NORTH_AABB;
+ private static final VoxelShape EAST_AABB_COPY = EAST_AABB.copy();
+ private static final VoxelShape WEST_AABB_COPY = WEST_AABB.copy();
+ private static final VoxelShape SOUTH_AABB_COPY = SOUTH_AABB.copy();
+ private static final VoxelShape NORTH_AABB_COPY = NORTH_AABB.copy();
+ // Sakura end - protect block shapes
// Sakura start - physics version api
protected static final VoxelShape LEGACY_EAST_AABB = Block.box(0.0, 0.0, 0.0, 2.0, 16.0, 16.0);
@@ -63,3 +63,20 @@ index 54781ea0771327f93a7cf672bb4b2945700c47e5..237b6a07e858395b3d43adf052b4047c
}
}
diff --git a/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java
index 24c1caa060e7c41eac81c19f873ac9273c6b84c2..6de2496807c1701510d3637d6817f6e9438a2362 100644
--- a/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java
+++ b/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java
@@ -481,6 +481,12 @@ public abstract class VoxelShape {
return new OffsetDoubleList(src, by);
}
// Paper end - optimise collisions
+ // Sakura start - protect block shapes
+ public final VoxelShape copy() {
+ this.cachedToAABBs = null;
+ return this.move(0.0, 0.0, 0.0);
+ }
+ // Sakura end - protect block shapes
public VoxelShape move(double x, double y, double z) {
// Paper start - optimise collisions