2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								From: Jake Potrebic <jake.m.potrebic@gmail.com>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Date: Wed, 6 Oct 2021 20:50:48 -0700
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Subject: [PATCH] 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.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-19 15:53:20 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								== AT ==
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								public net.minecraft.world.level.block.entity.BlockEntityType validBlocks
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-30 13:28:38 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public abstract class BlockEntity {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         // 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;
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 11:31:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-16 03:28:31 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ import org.bukkit.persistence.PersistentDataContainer;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import org.jetbrains.annotations.NotNull;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import org.jetbrains.annotations.Nullable;
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 11:31:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-public class CraftBlockEntityState<T extends BlockEntity> extends CraftBlockState implements TileState {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+public abstract class CraftBlockEntityState<T extends BlockEntity> extends CraftBlockState implements TileState { // Paper - revert upstream's revert of the block state changes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     private final T tileEntity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     private final T snapshot;
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:28:26 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public class CraftBlockEntityState<T extends BlockEntity> extends CraftBlockStat
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-    public CraftBlockEntityState<T> copy() {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        return new CraftBlockEntityState<>(this);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public abstract CraftBlockEntityState<T> copy(); // Paper - make abstract
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     // Paper start
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     @Override
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ import net.minecraft.world.level.block.entity.BeehiveBlockEntity;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.BellBlockEntity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.BlastFurnaceBlockEntity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.BlockEntity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+import net.minecraft.world.level.block.entity.BlockEntityType; // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.BrewingStandBlockEntity;
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 03:20:03 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.BrushableBlockEntity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.CalibratedSculkSensorBlockEntity;
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public final class CraftBlockStates {
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 11:31:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     private static final BlockStateFactory<?> DEFAULT_FACTORY = new BlockStateFactory<CraftBlockState>(CraftBlockState.class) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         @Override
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         public CraftBlockState createBlockState(World world, BlockPos blockPosition, net.minecraft.world.level.block.state.BlockState blockData, BlockEntity tileEntity) {
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 11:31:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-            // SPIGOT-6754, SPIGOT-6817: Restore previous behaviour for tile entities with removed blocks (loot generation post-destroy)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            if (tileEntity != null) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                // block with unhandled TileEntity:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                return new CraftBlockEntityState<>(world, tileEntity);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            // Paper - revert upstream's revert of the block state changes. Block entities that have already had the block type set to AIR are still valid, upstream decided to ignore them
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             Preconditions.checkState(tileEntity == null, "Unexpected BlockState for %s", CraftMagicNumbers.getMaterial(blockData.getBlock()));
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								             return new CraftBlockState(world, blockPosition, blockData);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    private static final Map<BlockEntityType<?>, BlockStateFactory<?>> FACTORIES_BY_BLOCK_ENTITY_TYPE = new HashMap<>();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    private static void register(BlockEntityType<?> type, BlockStateFactory<?> factory) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        FACTORIES_BY_BLOCK_ENTITY_TYPE.put(type, factory);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     static {
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ACACIA_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ACACIA_WALL_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.BAMBOO_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BAMBOO_WALL_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.BIRCH_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BIRCH_WALL_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-14 21:55:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.CHERRY_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CHERRY_WALL_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.CRIMSON_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CRIMSON_WALL_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.DARK_OAK_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.DARK_OAK_WALL_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.JUNGLE_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.JUNGLE_WALL_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.MANGROVE_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MANGROVE_WALL_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.OAK_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.OAK_WALL_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SPRUCE_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SPRUCE_WALL_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WARPED_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WARPED_WALL_SIGN
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftSign.class, CraftSign::new, SignBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.ACACIA_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ACACIA_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BAMBOO_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BAMBOO_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BIRCH_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BIRCH_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-14 21:55:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.CHERRY_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CHERRY_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.CRIMSON_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CRIMSON_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.DARK_OAK_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.DARK_OAK_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.JUNGLE_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.JUNGLE_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MANGROVE_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MANGROVE_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.OAK_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.OAK_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SPRUCE_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SPRUCE_WALL_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WARPED_HANGING_SIGN,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WARPED_WALL_HANGING_SIGN
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftHangingSign.class, CraftHangingSign::new, HangingSignBlockEntity::new
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.CREEPER_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CREEPER_WALL_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.DRAGON_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.DRAGON_WALL_HEAD,
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.PIGLIN_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PIGLIN_WALL_HEAD,
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-                        Material.PLAYER_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PLAYER_WALL_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SKELETON_SKULL,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SKELETON_WALL_SKULL,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WITHER_SKELETON_SKULL,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WITHER_SKELETON_WALL_SKULL,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ZOMBIE_HEAD,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ZOMBIE_WALL_HEAD
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftSkull.class, CraftSkull::new, SkullBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.COMMAND_BLOCK,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.REPEATING_COMMAND_BLOCK,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CHAIN_COMMAND_BLOCK
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftCommandBlock.class, CraftCommandBlock::new, CommandBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLACK_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLACK_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLUE_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLUE_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BROWN_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BROWN_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CYAN_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CYAN_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GRAY_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GRAY_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GREEN_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GREEN_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_BLUE_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_BLUE_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_GRAY_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_GRAY_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIME_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIME_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MAGENTA_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MAGENTA_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ORANGE_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ORANGE_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PINK_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PINK_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PURPLE_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PURPLE_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.RED_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.RED_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WHITE_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WHITE_WALL_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.YELLOW_BANNER,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.YELLOW_WALL_BANNER
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftBanner.class, CraftBanner::new, BannerBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WHITE_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ORANGE_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MAGENTA_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_BLUE_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.YELLOW_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIME_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PINK_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GRAY_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_GRAY_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CYAN_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PURPLE_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLUE_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BROWN_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GREEN_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.RED_SHULKER_BOX,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLACK_SHULKER_BOX
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftShulkerBox.class, CraftShulkerBox::new, ShulkerBoxBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLACK_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BLUE_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BROWN_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CYAN_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GRAY_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.GREEN_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_BLUE_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIGHT_GRAY_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.LIME_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.MAGENTA_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.ORANGE_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PINK_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.PURPLE_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.RED_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.WHITE_BED,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.YELLOW_BED
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftBed.class, CraftBed::new, BedBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BEEHIVE,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.BEE_NEST
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftBeehive.class, CraftBeehive::new, BeehiveBlockEntity::new
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                Arrays.asList(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.CAMPFIRE,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-                        Material.SOUL_CAMPFIRE
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-                ), CraftCampfire.class, CraftCampfire::new, CampfireBlockEntity::new
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.BARREL, CraftBarrel.class, CraftBarrel::new, BarrelBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.BEACON, CraftBeacon.class, CraftBeacon::new, BeaconBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.BELL, CraftBell.class, CraftBell::new, BellBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.BLAST_FURNACE, CraftBlastFurnace.class, CraftBlastFurnace::new, BlastFurnaceBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.BREWING_STAND, CraftBrewingStand.class, CraftBrewingStand::new, BrewingStandBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.CHEST, CraftChest.class, CraftChest::new, ChestBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.CHISELED_BOOKSHELF, CraftChiseledBookshelf.class, CraftChiseledBookshelf::new, ChiseledBookShelfBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.COMPARATOR, CraftComparator.class, CraftComparator::new, ComparatorBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.CONDUIT, CraftConduit.class, CraftConduit::new, ConduitBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.DAYLIGHT_DETECTOR, CraftDaylightDetector.class, CraftDaylightDetector::new, DaylightDetectorBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-14 21:55:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.DECORATED_POT, CraftDecoratedPot.class, CraftDecoratedPot::new, DecoratedPotBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.DISPENSER, CraftDispenser.class, CraftDispenser::new, DispenserBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.DROPPER, CraftDropper.class, CraftDropper::new, DropperBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.ENCHANTING_TABLE, CraftEnchantingTable.class, CraftEnchantingTable::new, EnchantmentTableBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.ENDER_CHEST, CraftEnderChest.class, CraftEnderChest::new, EnderChestBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.END_GATEWAY, CraftEndGateway.class, CraftEndGateway::new, TheEndGatewayBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.END_PORTAL, CraftEndPortal.class, CraftEndPortal::new, TheEndPortalBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.FURNACE, CraftFurnaceFurnace.class, CraftFurnaceFurnace::new, FurnaceBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.HOPPER, CraftHopper.class, CraftHopper::new, HopperBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.JIGSAW, CraftJigsaw.class, CraftJigsaw::new, JigsawBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.JUKEBOX, CraftJukebox.class, CraftJukebox::new, JukeboxBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.LECTERN, CraftLectern.class, CraftLectern::new, LecternBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.MOVING_PISTON, CraftMovingPiston.class, CraftMovingPiston::new, PistonMovingBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.SCULK_CATALYST, CraftSculkCatalyst.class, CraftSculkCatalyst::new, SculkCatalystBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 03:20:03 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.CALIBRATED_SCULK_SENSOR, CraftCalibratedSculkSensor.class, CraftCalibratedSculkSensor::new, CalibratedSculkSensorBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.SCULK_SENSOR, CraftSculkSensor.class, CraftSculkSensor::new, SculkSensorBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.SCULK_SHRIEKER, CraftSculkShrieker.class, CraftSculkShrieker::new, SculkShriekerBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.SMOKER, CraftSmoker.class, CraftSmoker::new, SmokerBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.SPAWNER, CraftCreatureSpawner.class, CraftCreatureSpawner::new, SpawnerBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.STRUCTURE_BLOCK, CraftStructureBlock.class, CraftStructureBlock::new, StructureBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 03:20:03 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.SUSPICIOUS_SAND, CraftSuspiciousSand.class, CraftSuspiciousSand::new, BrushableBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.SUSPICIOUS_GRAVEL, CraftBrushableBlock.class, CraftBrushableBlock::new, BrushableBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.TRAPPED_CHEST, CraftChest.class, CraftChest::new, TrappedChestBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-06 10:17:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        register(Material.CRAFTER, CraftCrafter.class, CraftCrafter::new, CrafterBlockEntity::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        register(Material.TRIAL_SPAWNER, CraftTrialSpawner.class, CraftTrialSpawner::new, TrialSpawnerBlockEntity::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        // Paper start - simplify
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SIGN, CraftSign.class, CraftSign::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-08 10:23:12 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.HANGING_SIGN, CraftHangingSign.class, CraftHangingSign::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SKULL, CraftSkull.class, CraftSkull::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.COMMAND_BLOCK, CraftCommandBlock.class, CraftCommandBlock::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BANNER, CraftBanner.class, CraftBanner::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SHULKER_BOX, CraftShulkerBox.class, CraftShulkerBox::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BED, CraftBed.class, CraftBed::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BEEHIVE, CraftBeehive.class, CraftBeehive::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.CAMPFIRE, CraftCampfire.class, CraftCampfire::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BARREL, CraftBarrel.class, CraftBarrel::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BEACON, CraftBeacon.class, CraftBeacon::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BELL, CraftBell.class, CraftBell::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BLAST_FURNACE, CraftBlastFurnace.class, CraftBlastFurnace::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BREWING_STAND, CraftBrewingStand.class, CraftBrewingStand::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.CHEST, CraftChest.class, CraftChest::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:05:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.CHISELED_BOOKSHELF, CraftChiseledBookshelf.class, CraftChiseledBookshelf::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.COMPARATOR, CraftComparator.class, CraftComparator::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.CONDUIT, CraftConduit.class, CraftConduit::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.DAYLIGHT_DETECTOR, CraftDaylightDetector.class, CraftDaylightDetector::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-14 21:55:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.DECORATED_POT, CraftDecoratedPot.class, CraftDecoratedPot::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.DISPENSER, CraftDispenser.class, CraftDispenser::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.DROPPER, CraftDropper.class, CraftDropper::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.ENCHANTING_TABLE, CraftEnchantingTable.class, CraftEnchantingTable::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.ENDER_CHEST, CraftEnderChest.class, CraftEnderChest::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.END_GATEWAY, CraftEndGateway.class, CraftEndGateway::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.END_PORTAL, CraftEndPortal.class, CraftEndPortal::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.FURNACE, CraftFurnaceFurnace.class, CraftFurnaceFurnace::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.HOPPER, CraftHopper.class, CraftHopper::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.JIGSAW, CraftJigsaw.class, CraftJigsaw::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.JUKEBOX, CraftJukebox.class, CraftJukebox::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.LECTERN, CraftLectern.class, CraftLectern::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.PISTON, CraftMovingPiston.class, CraftMovingPiston::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SCULK_CATALYST, CraftSculkCatalyst.class, CraftSculkCatalyst::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SCULK_SENSOR, CraftSculkSensor.class, CraftSculkSensor::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SCULK_SHRIEKER, CraftSculkShrieker.class, CraftSculkShrieker::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 17:04:46 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.CALIBRATED_SCULK_SENSOR, CraftCalibratedSculkSensor.class, CraftCalibratedSculkSensor::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.SMOKER, CraftSmoker.class, CraftSmoker::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.MOB_SPAWNER, CraftCreatureSpawner.class, CraftCreatureSpawner::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.STRUCTURE_BLOCK, CraftStructureBlock.class, CraftStructureBlock::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 22:45:45 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.BRUSHABLE_BLOCK, CraftBrushableBlock.class, CraftBrushableBlock::new); // note: spigot still uses CraftSuspiciousSand impl for that block type
 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.TRAPPED_CHEST, CraftChest.class, CraftChest::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-06 10:17:00 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.CRAFTER, CraftCrafter.class, CraftCrafter::new);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        register(BlockEntityType.TRIAL_SPAWNER, CraftTrialSpawner.class, CraftTrialSpawner::new);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     private static void register(Material blockType, BlockStateFactory<?> factory) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public final class CraftBlockStates {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     private static <T extends BlockEntity, B extends CraftBlockEntityState<T>> void register(
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-            Material blockType,
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-23 14:57:03 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-            Class<B> blockStateType,
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-            BiFunction<World, T, B> blockStateConstructor,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            BiFunction<BlockPos, net.minecraft.world.level.block.state.BlockState, T> tileEntityConstructor
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-23 14:57:03 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-    ) {
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								-        CraftBlockStates.register(Collections.singletonList(blockType), blockStateType, blockStateConstructor, tileEntityConstructor);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-    private static <T extends BlockEntity, B extends CraftBlockEntityState<T>> void register(
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            List<Material> blockTypes,
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-23 14:57:03 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+            net.minecraft.world.level.block.entity.BlockEntityType<? extends T> blockEntityType, // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             Class<B> blockStateType,
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-            BiFunction<World, T, B> blockStateConstructor,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            BiFunction<BlockPos, net.minecraft.world.level.block.state.BlockState, T> tileEntityConstructor
 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-23 14:57:03 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+            BiFunction<World, T, B> blockStateConstructor // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     ) {
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								-        BlockStateFactory<B> factory = new BlockEntityStateFactory<>(blockStateType, blockStateConstructor, tileEntityConstructor);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-        for (Material blockType : blockTypes) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            CraftBlockStates.register(blockType, factory);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        BlockStateFactory<B> factory = new BlockEntityStateFactory<>(blockStateType, blockStateConstructor, blockEntityType::create);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        for (net.minecraft.world.level.block.Block block : blockEntityType.validBlocks) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            CraftBlockStates.register(CraftMagicNumbers.getMaterial(block), factory);
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 11:57:05 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        CraftBlockStates.register(blockEntityType, factory);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        // Paper end
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     private static BlockStateFactory<?> getFactory(Material material) {
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:34:58 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         return CraftBlockStates.FACTORIES.getOrDefault(material, CraftBlockStates.DEFAULT_FACTORY);
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    private static BlockStateFactory<?> getFactory(Material material, BlockEntityType<?> type) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        if (type != null) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            return CraftBlockStates.FACTORIES_BY_BLOCK_ENTITY_TYPE.getOrDefault(type, getFactory(material));
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        } else {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            return getFactory(material);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public static Class<? extends CraftBlockState> getBlockStateType(Material material) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         Preconditions.checkNotNull(material, "material is null");
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         return CraftBlockStates.getFactory(material).blockStateType;
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 13:44:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public final class CraftBlockStates {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         return null;
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public static Class<? extends CraftBlockState> getBlockStateType(BlockEntityType<?> blockEntityType) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        Preconditions.checkNotNull(blockEntityType, "blockEntityType is null");
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+        return CraftBlockStates.getFactory(null, blockEntityType).blockStateType;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     public static BlockState getBlockState(Block block) {
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 11:31:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         // Paper start
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         return CraftBlockStates.getBlockState(block, true);
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public final class CraftBlockStates {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         if (world != null && tileEntity == null && CraftBlockStates.isTileEntityOptional(material)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             factory = CraftBlockStates.DEFAULT_FACTORY;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								-            factory = CraftBlockStates.getFactory(material);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+            factory = CraftBlockStates.getFactory(material, tileEntity != null ? tileEntity.getType() : null); // Paper
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         return factory.createBlockState(world, blockPosition, blockData, tileEntity);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								diff --git a/src/test/java/org/bukkit/craftbukkit/block/BlockStateTest.java b/src/test/java/org/bukkit/craftbukkit/block/BlockStateTest.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								--- a/src/test/java/org/bukkit/craftbukkit/block/BlockStateTest.java
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+++ b/src/test/java/org/bukkit/craftbukkit/block/BlockStateTest.java
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 17:25:21 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ import net.minecraft.core.registries.BuiltInRegistries;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.Block;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.EntityBlock;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import net.minecraft.world.level.block.entity.BlockEntity;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+import net.minecraft.world.level.block.entity.BlockEntityType;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import org.bukkit.Material;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import org.bukkit.craftbukkit.util.CraftMagicNumbers;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 import org.bukkit.support.AbstractTestingBase;
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								@@ -0,0 +0,0 @@ public class BlockStateTest extends AbstractTestingBase {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 17:25:21 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+    // Paper start
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								+    @Test
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    public void testBlockEntityTypes() {
 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-08 10:23:12 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+        for (var blockEntityType : BuiltInRegistries.BLOCK_ENTITY_TYPE) {
 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-24 17:16:58 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+            org.junit.jupiter.api.Assertions.assertNotNull(CraftBlockStates.getBlockStateType(blockEntityType));
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								+        }
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								+    }
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-08 17:25:21 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								+    // Paper end
 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-06 21:11:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 }