From a72d54044affc0baa9b4eb47a4a749596ba6c9a9 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sat, 9 Oct 2021 16:29:58 +1100 Subject: [PATCH] SPIGOT-6754: Temporarily restore previous behaviour for tile entities with removed blocks --- .../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/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java index 26409a4f5..14e5f618e 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/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/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java index 79b64bdb3..71d42d6ac 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/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); }