mirror of
https://github.com/Samsuik/Sakura.git
synced 2025-12-21 07:49:29 +00:00
84 lines
4.3 KiB
Diff
84 lines
4.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samsuik <kfian294ma4@gmail.com>
|
|
Date: Wed, 22 May 2024 23:40:02 +0100
|
|
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 fe2d445a62fbd25d8dbbfad781bbf5a30e30175b..6b8e5ab4cf96865d608483e573d7bb809ac0b18a 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/CarpetBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/CarpetBlock.java
|
|
@@ -15,6 +15,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.copy(); // Sakura - protect block shapes against plugins
|
|
|
|
@Override
|
|
public MapCodec<? extends CarpetBlock> codec() {
|
|
@@ -27,7 +28,7 @@ public class CarpetBlock extends Block {
|
|
|
|
@Override
|
|
protected VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
|
|
- return SHAPE;
|
|
+ return SHAPE_COPY; // Sakura - protect block shapes against plugins
|
|
}
|
|
|
|
@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 f702c88e96f1f692074dc56f2212230d49db41fb..f022aa201e25da7c5a3c7195662c202cc1b57695 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/LadderBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/LadderBlock.java
|
|
@@ -29,6 +29,12 @@ public class LadderBlock extends Block implements SimpleWaterloggedBlock {
|
|
protected static final VoxelShape WEST_AABB = Block.box(13.0, 0.0, 0.0, 16.0, 16.0, 16.0);
|
|
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 against plugins
|
|
+ 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 against plugins
|
|
// 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);
|
|
protected static final VoxelShape LEGACY_WEST_AABB = Block.box(14.0, 0.0, 0.0, 16.0, 16.0, 16.0);
|
|
@@ -69,14 +75,16 @@ public class LadderBlock extends Block implements SimpleWaterloggedBlock {
|
|
// Sakura end - physics version api
|
|
switch ((Direction)state.getValue(FACING)) {
|
|
case NORTH:
|
|
- return NORTH_AABB;
|
|
+ // Sakura start - protect block shapes against plugins
|
|
+ return NORTH_AABB_COPY;
|
|
case SOUTH:
|
|
- return SOUTH_AABB;
|
|
+ return SOUTH_AABB_COPY;
|
|
case WEST:
|
|
- return WEST_AABB;
|
|
+ return WEST_AABB_COPY;
|
|
case EAST:
|
|
default:
|
|
- return EAST_AABB;
|
|
+ return EAST_AABB_COPY;
|
|
+ // Sakura end - protect block shapes against plugins
|
|
}
|
|
}
|
|
|
|
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 3f8e7e29c3e52211a29e6f0a32890f6b53bfd9a8..21210877f903323fbff961e9dd7f6eafb6f0a746 100644
|
|
--- a/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java
|
|
+++ b/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java
|
|
@@ -557,6 +557,13 @@ public abstract class VoxelShape implements ca.spottedleaf.moonrise.patches.coll
|
|
return this.isEmpty; // Paper - optimise collisions
|
|
}
|
|
|
|
+ // Sakura start - protect block shapes against plugins
|
|
+ public final VoxelShape copy() {
|
|
+ this.cachedToAABBs = null;
|
|
+ return this.move(Vec3.ZERO);
|
|
+ }
|
|
+ // Sakura end - protect block shapes against plugins
|
|
+
|
|
public VoxelShape move(Vec3 vec3d) {
|
|
return this.move(vec3d.x, vec3d.y, vec3d.z);
|
|
}
|