|
| 1 | +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Jake Potrebic <jake.m.potrebic@gmail.com> |
| 3 | +Date: Tue, 4 Jun 2024 19:48:03 -0700 |
| 4 | +Subject: [PATCH] Fix Player#setBlockUpdate |
| 5 | + |
| 6 | +BlockEntity needs its Level set |
| 7 | + |
| 8 | +diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java |
| 9 | +index 397eb1a101bd60f49dbb2fa8eddf28f6f233167f..e28bc898786542f695017ff0a036676840eb79fe 100644 |
| 10 | +--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java |
| 11 | ++++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java |
| 12 | +@@ -177,6 +177,7 @@ public abstract class CraftBlockEntityState<T extends BlockEntity> extends Craft |
| 13 | + @Nullable |
| 14 | + public Packet<ClientGamePacketListener> getUpdatePacket(@NotNull Location location) { |
| 15 | + T vanillaTileEntitiy = (T) BlockEntity.loadStatic(CraftLocation.toBlockPosition(location), this.getHandle(), this.getSnapshotNBT(), this.getRegistryAccess()); |
| 16 | ++ vanillaTileEntitiy.setLevel(((org.bukkit.craftbukkit.CraftWorld) location.getWorld()).getHandle()); // Paper - set level. Required for accessing RegistryAccess |
| 17 | + return ClientboundBlockEntityDataPacket.create(vanillaTileEntitiy); |
| 18 | + } |
| 19 | + |
| 20 | +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java |
| 21 | +index 4a886f11b10395143879e1c1795afc269eed109d..8d697782fae536377ac29acf967c764ee8a7951a 100644 |
| 22 | +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java |
| 23 | ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java |
| 24 | +@@ -1118,6 +1118,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { |
| 25 | + public void sendBlockUpdate(@NotNull Location location, @NotNull TileState tileState) throws IllegalArgumentException { |
| 26 | + Preconditions.checkArgument(location != null, "Location can not be null"); |
| 27 | + Preconditions.checkArgument(tileState != null, "TileState can not be null"); |
| 28 | ++ Preconditions.checkArgument(location.getWorld() != null, "Location must have a world"); // Paper |
| 29 | + |
| 30 | + if (this.getHandle().connection == null) return; |
| 31 | + |
0 commit comments