From e9ecd129831d804879fa85607b4668d6c7e46d0c Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sat, 9 Oct 2021 16:29:58 +1100 Subject: [PATCH] SPIGOT-6754: Temporarily restore previous behaviour for tile entities with removed blocks By: md_5 --- .../org/bukkit/craftbukkit/block/CraftBlockEntityState.java | 2 +- .../java/org/bukkit/craftbukkit/block/CraftBlockStates.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java index 26409a4f52..14e5f618e6 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java @@ -6,7 +6,7 @@ import org.bukkit.World; import org.bukkit.block.TileState; import org.bukkit.persistence.PersistentDataContainer; -public abstract class CraftBlockEntityState extends CraftBlockState implements TileState { +public class CraftBlockEntityState extends CraftBlockState implements TileState { private final T tileEntity; private final T snapshot; diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java index 79b64bdb3c..71d42d6ac1 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java @@ -106,6 +106,11 @@ public final class CraftBlockStates { private static final BlockStateFactory DEFAULT_FACTORY = new BlockStateFactory(CraftBlockState.class) { @Override public CraftBlockState createBlockState(World world, BlockPosition blockPosition, IBlockData blockData, TileEntity tileEntity) { + // SPIGOT-6754: Temporarily restore previous behaviour for tile entities with removed blocks + if (tileEntity != null) { + // block with unhandled TileEntity: + return new CraftBlockEntityState<>(world, tileEntity); + } Preconditions.checkState(tileEntity == null, "Unexpected BlockState for %s", CraftMagicNumbers.getMaterial(blockData.getBlock())); return new CraftBlockState(world, blockPosition, blockData); }