Fix upstreams block state factories
Sometimes, blocks are changed and then logic is called before the associated tile entity is removed. When this happens, the factories were relying on the block at the position, not the tile entity. This change prioritizes using the tile entity type to determine the block state factory and falls back on the material type of the block at that location. == AT == public net.minecraft.world.level.block.entity.BlockEntityType validBlocks
This commit is contained in:
parent
5f4779fc86
commit
e259cfeb72
4 changed files with 106 additions and 248 deletions
|
@ -122,7 +122,7 @@
|
|||
+ // Paper end
|
||||
+ if (this.level == null) return null;
|
||||
+ org.bukkit.block.Block block = this.level.getWorld().getBlockAt(this.worldPosition.getX(), this.worldPosition.getY(), this.worldPosition.getZ());
|
||||
+ if (block.getType() == org.bukkit.Material.AIR) return null;
|
||||
+ // if (block.getType() == org.bukkit.Material.AIR) return null; // Paper - actually get the tile entity if it still exists
|
||||
+ org.bukkit.block.BlockState state = block.getState(useSnapshot); // Paper
|
||||
+ if (state instanceof InventoryHolder) return (InventoryHolder) state;
|
||||
+ return null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue